package mule;

import java.awt.Point;

/**
 * Interface for Tile objects
 * 
 */
public interface Tile {
	/**
	 * Returns location of tile
	 * 
	 * @return point
	 */
	public Point getPoint();

	/**
	 * Set the point of the tile
	 */
	public void setPoint(Point loc);

	/**
	 * Gets the food production rate
	 * 
	 * @return foodRate
	 */
	public int getFoodRate();

	/**
	 * Gets the Energy Rate of the tile
	 * 
	 * @return energyRate
	 */
	public int getEnergyRate();

	/**
	 * Gets the Ore Rate of the tile
	 * 
	 * @return oreRate
	 */
	public int getOreRate();

	/**
	 * Returns whether this tile is owned or not
	 * 
	 * @return true if owned
	 */
	public boolean isOwned();

	/**
	 * Gets the cost of the tile
	 * 
	 * @return cost
	 */
	public int getCost();

	/**
	 * sets the tile's isOwned boolean to true
	 */
	public void setOwned();

	/**
	 * Calculates production when a Mule is on the property
	 */
	public void production();

	/**
	 * Add a mule to the tile
	 * 
	 * @param mule
	 */
	public void setMule(Mule mule);

	/**
	 * Returns the tile's mule
	 * 
	 * @return
	 */
	public Mule getMule();

	/**
	 * Return true if tile has a mule
	 * 
	 * @return boolean hasMule
	 */
	public boolean hasMule();

	/**
	 * return player owner
	 * 
	 * @return Player Owner
	 */
	public Player getOwner();

	/**
	 * set new owner to tile
	 * 
	 * @param player
	 *            Owner
	 */
	public void setOwner(Player player);

}
